The indexing and searching of structured data are important functionalities for many businesses on both sides of sales transactions. For example, sellers may provide access to catalog data (including, for example, product information on various products for sale) to buyers to allow buyers to select items to purchase or contract for. This type of usage is especially prevalent for businesses, which often procure items in large quantities directly from a supplier. Traditionally, such structured data was stored in dedicated databases. An authorized buyer, for example, would gain viewing access to a supplier's database and thus be able to search directly the products in the database.
Recently there has been increased movement of data to the cloud. In such cloud environments, there is a lot more data (in both quantity and size) to be stored. This can complicate the process of indexing the data in order for it to be efficiently stored and searched. Additionally, in such a system it is desirable to allow tenants to customize schemas of particular record types, allowing for each tenant to have a different schema. When a schema is modified, such as by adding a new column, it is common to take the entire database offline in order to perform the update, and then restart all servers (typically in a specific order). The updating includes not only changing the old data to the new schema (by, for example, adding the column to all the old data) but also adding default values for the new aspects of the schema (e.g., default values for the new column). This adds downtime and complexity to the process of updating a schema.